Programınızın her zaman değil, bazı şartlar gerçekleştiğinde işletmesini istediğiniz komutlar olur sık sık. Bu amaçla if
yapısını kullanırız.
In [2]:
sayi = 15
tahmin = input("Tahmin: ")
if sayi == tahmin:
print "Doğru!"
Bu kod parçasını çalıştırıp 15'den farklı bir sayı verdiğinizde herhangi bir mesaj çıkmayacak, ama 15 verdiğinizde Doğru!
yazacak.
Dikkat edilecek noktalar:
if
kelimesinin ardından bir şart (sayi
eşittir tahmin
) gelmeli.==
) kullanırız. Tek eşit (=
) değişken ataması demektir.:
) koymak gerek.Blok kaydırmasını (indentation) bazı editörler (IPython Notebook gibi) otomatik olarak yapar. Aksi takdirde kendiniz yapmalısınız. Kaydırma miktarı önemli değil, bir boşluk bile olur, ama aynı blok içinde tutarlı olmalı. Okunaklıklık için programcılar genel olarak Tab tuşuyla dört boşlukluk kaydırmayı benimsemiştir.
Doğru kaydırma yapılmazsa blok yapısı bozulur ve program yanlış çalışır. Sözgelişi:
In [ ]:
sayi = 15
tahmin = input("Tahmin: ")
if sayi == tahmin:
print "Doğru!"
print "Bravo!"
Bu program sadece yapılan tahmin doğruysa Bravo!
yazar. Buna karşılık:
In [ ]:
sayi = 15
tahmin = input("Tahmin: ")
if sayi == tahmin:
print "Doğru!"
print "Bravo!"
Bu program tahmin doğru olsa da olmasa da Bravo!
yazar, çünkü
ikinci print
komutu ilk kaydırma seviyesinden başlatıldığı için, if
blokunun dışında kaldı.
Yanlış tahminde bulunduğumuzda da programımızın bir tepki vermesini istiyorsak, if
ile beraber else
kullanırız.
In [4]:
sayi = 15
tahmin = input("Tahmin: ")
if sayi == tahmin:
print "Doğru!"
else:
print "Yanlış!"
Dikkat edilecek noktalar:
if
ve else
kelimeleri aynı komutun parçasıdırlar. Aynı hizada olmalıdırlar.else
'den sonra bir şart gelmez. else
bloku yukarıdaki şartın yanlış olduğu durumda çalışır sadece.if
tek başına kullanılabilir, ama else
kullanılamaz. Her else
'in bir if
'e bağlı olması gerekir.Şimdi if
komutunun en genel haline bakacağız. else
den sonra tekrar bir if
kullanmamızın gerektiği durumları elif
ifadesiyle sadeleştirebiliriz. Diyelim, öğrencilerin sayısal notlarını alıp harf notları veren bir program yazıyoruz. Ölçeğimiz şöyle olsun:
In [7]:
n = input("Notu girin: ")
if n < 0 or n > 100:
print "Geçersiz not"
elif n <= 50:
print "F"
elif n <= 65:
print "D"
elif n <= 80:
print "C"
elif n<=90:
print "B"
else:
print "A"
Aynı programı sadece if
ve else
kullanarak da yazabiliriz, ama ardarda kaydırmalar yüzünden daha zor anlaşılır.
In [ ]:
n = input("Notu girin: ")
if n < 0 or n > 100:
print "Geçersiz not"
else:
if n <= 50:
print "F"
else:
if n <= 65:
print "D"
else:
if n <= 80:
print "C"
else:
if n<=90:
print "B"
else:
print "A"
Birçok kez bir değişkene belli bir şartın doğruluğuna veya yanlışlığına göre bir değer atamamız gerekir. Mesela:
In [10]:
a = 3
if a < 5:
x = "falan"
else:
x = "filan"
print x
Bunu daha kısa yoldan üçlü if ifadesi ile sağlarız:
In [9]:
x = "falan" if a < 5 else "filan"
print x
Daha somut olarak, bir sayının mutlak değerini almak için:
In [11]:
x = -3
x = -x if x<0 else x
print x
Üçlü if
ifadesi bir değer geri verdiği için, if-else
blokunun dil kuralları gereği kullanılamadığı yerlerde kullanılabilir, kod yazma esnekliği sağlar.
Bu üçlü yapıda elif
yoktur ama içiçe kararlar verilebilir. Sözgelişi, hava sıcaklığı 15C altındaysa "soğuk"
, 15C-25C arasındaysa "ılık"
, 25C üstündeyse "sıcak"
veren bir ifade yazalım.
In [16]:
s = input("Sıcaklık: ")
mesaj = "hava soğuk" if s < 15 else "hava ılık" if s < 25 else "hava sıcak"
print mesaj
In [ ]: